import time
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor

# ThreadPoolExecutor --> 线程池
# ProcessPoolExecutor --> 进程池

# 不传参数>> 默认线程数量 = 当前cpu个数*5
pool = ThreadPoolExecutor(3)  # 设置固定3个线程


def task(name):
    print(f"{name}出生了")
    time.sleep(2)
    print(f"{name}长大了5岁")
    return "kk" + str(name)


# 构建空异步线程结果列表
rs = []

for i in range(1, 12):
    # 往线程池提交任务 --> 异步提交
    result = pool.submit(task, i)  # 根据线程池大小同时提交任务个数，如本次案例中3个线程为一组提交
    # 每获取一个异步线程对象则添加入列表
    rs.append(result)

# 等待线程池中所有任务运行完毕后关闭线程池
pool.shutdown()

# 线程对象异步提交完成以后再获取异步结果
for r in rs:
    print(r.result())
